package com.ljy.tkuser.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.ljy.tkuser.service.OssServices;
import com.ljy.tkuser.util.ConstantPropertiesUtils;
import com.ljy.tkuser.util.OSSAutoConfig;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.UUID;

//上传文件到阿里云oss  返回oss文件路径
@Service
public class OssServicesimpl implements OssServices {
    @Override
    public String uploadFileAvatar(MultipartFile file) throws IOException {
        OSS ossClient = OSSAutoConfig.getOssClient();
        //获取上次文件输入流
        InputStream inputStream = file.getInputStream();
        //获取文件名称
        String filename = file.getOriginalFilename();
        //文件名称唯一
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        filename = uuid+filename;

        //给文件按日期建目录
        String dataPath = new DateTime().toString("yyyy/MM/dd");
        filename = dataPath+"/"+filename;
// 上传文件到指定的存储空间（bucketName）并将其保存为指定的文件名称（objectName）。
        ossClient.putObject(ConstantPropertiesUtils.BUCKETNAME, filename, inputStream);
        //拼接文件路径
        String url ="https://"+ConstantPropertiesUtils.BUCKETNAME+"."+ConstantPropertiesUtils.ENDPOINT+"/"+filename;
// 关闭OSSClient。
        ossClient.shutdown();
        return url;
    }

    //多文件上传
    @Override
    public ArrayList<String> uploadFileAvatars(MultipartFile[] files) throws IOException {
        OSS ossClient = OSSAutoConfig.getOssClient();
        ArrayList<String> urlList = new ArrayList<>();
        if (files.length>0){
            for (MultipartFile f: files) {
                //获取上次文件输入流
                InputStream inputStream = f.getInputStream();
                //获取文件名称
                String filename = f.getOriginalFilename();
                //文件名称唯一
                String uuid = UUID.randomUUID().toString().replaceAll("-", "");
                filename = uuid+filename;

                //给文件按日期建目录
                String dataPath = new DateTime().toString("yyyy/MM/dd");
                filename = dataPath+"/"+filename;
// 上传文件到指定的存储空间（bucketName）并将其保存为指定的文件名称（objectName）。
                ossClient.putObject(ConstantPropertiesUtils.BUCKETNAME, filename, inputStream);
                //拼接文件路径
                String url ="https://"+ConstantPropertiesUtils.BUCKETNAME+"."+ConstantPropertiesUtils.ENDPOINT+"/"+filename;
                urlList.add(url);
            }
        }
        // 关闭OSSClient。
        ossClient.shutdown();
        return urlList;
    }
}
